Foresight Ventures: 破碎的可组合性
“可组合性是指一种能力, 让组件能够重新组合成更大的结构, 并且一个组件的输出能够成为另一个组件的输入. 最好的例子就是每一块都可以连接到另一块的乐高.
伟大的可组合性...吗?
神圣的可组合性! 可组合性为我们带来了金钱乐高 (ERC-20 和 OpenZepplin 等标准), 为我们带来了金融乐高 (DeFi 协议的各种组合), 为我们带来了媒体乐高 (NFT).
可组合性就是创新! 开发者可以像搭乐高一样, 把别人的乐高 (合约源码) 拿过来, 修修补补, 创建出一个新的产品.
可组合性就是复利! 用户还可以通过在创作出的不同新产品之间互相交互, 来释放资产的无限可能性.
Web3 的可组合性类似一个并非拷贝乐高, 而是引用乐高的微服务架构, 更强大但也更危险 (木板效应明显且致命).
Crypto = 可组合性 (开源数据与代码 + 互操作性 + 流动性整合) + 激励, 但是作为 Crypto 的重要组成部分, 一个可以无限次方的重要变量, 可组合性的乐高其实是一个随时摇摇欲坠的危房.
可组合性 === 开发与使用的复杂性
一个例子就是, 每个代码库 (无一例外) 都是屎山 (Web2 时代的成熟项目, 光是代码行数的数字就已经很复杂).
越多组合就意味着越高的复杂性, 也就是意味着在开发或使用时更多出错的可能, 更多的 Bug.
比如让你阅读这篇文章并点赞转发, 你可以轻松完成; 但如果让你关注比特币的币价的同时切苹果皮还要骑自行车, 你就很难同时完成这些任务了. 你确实同时做了很多事, 效率很高, 但是你非常容易出错.
上图是以太坊 Sharding 方案的变化. EVM 的设计目标就包括简单性和更少的外部依赖. 即使是非常复杂的想法, 也往往具有“合理简单”的版本. 有时候真的未必需要那么多的组合和工程化, 让事情过于复杂.
可组合性 === 软件依赖的风险
可组合性很多时候就预示着某些项目必须与其他项目组合, 才可以运行, 这就是软件依赖的风险.
试想一下, 你要做个 DEX 聚合器, 那么你就不得不去等待被聚合的 DEX 上线到网络, 你必须组合他们, 才能发挥美好的可组合性. 但这也意味着你得等 Uniswap 提出提案, 通过提案, 部署之后才能上线你的聚合器 (话说较多情况下直接用 Uniswap 是比聚合器更好的).
更明显的可组合性造成依赖的例子, 就是, 网络没有 EVM, 应用就上不了线了. EVM 成为可组合性不可缺少的一环了, 正是因此, 对很多生态, EVM 才如此重要.
有时候, 开发者和用户太过于依赖可组合性. 可组合性给开发者带来了快速的接入, 但是或许更长的等待时间; 也带来了现有的代码, 但是可能会坍塌的多米诺.
可组合性 === 开源项目的多米诺
书接前文的可组合性依赖问题, 这一长串的依赖其实让可组合性的乐高变成了多米诺.
开源供应链投毒的例子在最近也屡见不鲜, 比如主动投毒 (尽管本意可能是好的) 的 Faker.js 和 node-ipc, 还有不小心危害了整个互联网安全的 Log4j (最近 Java 好像又出事了).
这些问题的根本原因还是:
开发者不会看所有的源码, 只会复制粘贴 (Can devs do something?)
普通开源社区的激励不足以支持持久开发. (一个贡献者得喂饱八万个使用者)
为了解决这两个源头, 我们需要第三方审计服务, 去中心化的开发社区, 合理激励的 DAO, 更多的 Gitcoin 捐献, 更多分配到基础设施上的资金.
同时, 从问题中, 我们也看出全权交给社区开发也是不可取的 (JavaScript 社区), 同时不能太过于依赖社区贡献, 可能会导致缺乏标准库, 而且通常激励下社区开发很可能无法保证长久支持. 我们还是需要一些中立和有效的组织来决定纳入一些标准, 以及引导对开发社区的资金激励.
(顺便一提, Ethers 是 EVM 生态被使用最多的第三方库, 周下载量在 68 万左右, 但是只是 “Web2” 前端框架 react 的 5% 左右; 根据 Electric Capital 的数据, Web3 开发者的数量大概占所有开发者的 0.07%. Web3 开发还有很长的路要走.)
再回到 Web3, 如果 OpenZepplin 出点风险, 那受害的就不只是我们的软件了, 而是我们最宝贵的资金, 这是很可怕的.
可组合性 === 缺点更明显的 DAO
今年又是 DAO 元年. DAO 已经成为了社区的默认实践.
DAO 的可组合性确实可以让组织之间像嫁接一样, 共同繁荣生长.
但是作为一个分散组织, DAO 的缺点就是更慢更难的决策, 无法衡量工作的贡献, 以及有时候权力的滥用.
充满可组合性的 DAO 让 DAO 过于去中心化和复杂了, 以上的三个缺点被几何级数地放大.
可组合性让 DAO 的缺点更加缺点了.
可组合性 === 膨胀的金融泡沫
传统意义上的金融泡沫的可组合性的危害, 我相信不用多说了.
以 NFT 衍生品等举例, NFT 的金融项目在不断搭积木, 让整个 NFT 产业越来越复杂, 套利攻击等攻击机会也就越多. 而这些金融产品套上加套, 这些产品被保险公司认可 (就想到了审计机构), 风险被从买得起 BAYC 的富人转嫁给大众消费者. 最后当泡沫破裂的时候, 受伤最大的就是普通用户.
还记得比特币创世区块诞生的那一年发生了啥吗?
总结
对于可组合性, 我们需要知其优点, 也要知其缺点. 对于我文中提到的每个缺点, 我都可以用可组合性的优点来对其一一反驳, 但是我们仍然需要知道这些缺点, 而不是让可组合性变成一个任人打扮的玩偶.
可组合性仍然有很多的提高空间, 尽管它已经帮我们创造了无限庞大和美好的各种杰作 (Web1 + Web2 + Web3). 我们需要更多更好更受关注的胖协议 (我知道胖协议理论有些不合理了...), 可信中立性, 和认受性.
可组合性是 99% 的组合和 1% 的破碎.